home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / libx11 / include / x11 / extensions / xiproto.h < prev    next >
C/C++ Source or Header  |  1999-01-01  |  34KB  |  1,401 lines

  1. /* $Header: XIproto.h,v 1.20 91/07/24 15:50:02 rws Exp $ */
  2.  
  3. /************************************************************
  4. Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, California, and the 
  5. Massachusetts Institute of Technology, Cambridge, Massachusetts.
  6.  
  7.             All Rights Reserved
  8.  
  9. Permission to use, copy, modify, and distribute this software and its
  10. documentation for any purpose and without fee is hereby granted,
  11. provided that the above copyright notice appear in all copies and that
  12. both that copyright notice and this permission notice appear in
  13. supporting documentation, and that the names of Hewlett-Packard or MIT not be
  14. used in advertising or publicity pertaining to distribution of the
  15. software without specific, written prior permission.
  16.  
  17. HEWLETT-PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  18. ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
  19. HEWLETT-PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  20. ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  21. WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  22. ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  23. SOFTWARE.
  24.  
  25. ********************************************************/
  26.  
  27. #ifndef _XIPROTO_H
  28. #define _XIPROTO_H
  29.  
  30. #ifndef NEED_EVENTS
  31. #define  NEED_EVENTS
  32. #endif
  33. #ifndef NEED_REPLIES
  34. #define  NEED_REPLIES
  35. #endif
  36. #include <X11/Xproto.h>
  37. #include <X11/X.h>
  38.  
  39. /*********************************************************
  40.  *
  41.  * number of events, errors, and extension name.
  42.  *
  43.  */
  44.  
  45. #define MORE_EVENTS    0x80
  46. #define DEVICE_BITS    0x7F
  47.  
  48. #define InputClassBits    0x3F    /* bits in mode field for input classes */
  49. #define ModeBitsShift    6    /* amount to shift the remaining bits   */
  50.  
  51. #define numInputClasses 7
  52.  
  53. #define IEVENTS        15
  54. #define IERRORS        5
  55.  
  56. #define CLIENT_REQ        1
  57.  
  58. typedef struct  _XExtEventInfo
  59.     {
  60.     Mask    mask;
  61.     BYTE     type;
  62.     BYTE    word;
  63.     } XExtEventInfo;
  64.  
  65. typedef unsigned char *Pointer;
  66.  
  67. struct tmask
  68.     {
  69.     Mask    mask;
  70.     Pointer     dev;
  71.     };
  72.  
  73. /*********************************************************
  74.  *
  75.  * Event constants used by library.
  76.  *
  77.  */
  78.  
  79. #define XI_DeviceValuator        0
  80. #define XI_DeviceKeyPress        1
  81. #define XI_DeviceKeyRelease        2
  82. #define XI_DeviceButtonPress        3
  83. #define XI_DeviceButtonRelease        4
  84. #define XI_DeviceMotionNotify        5
  85. #define XI_DeviceFocusIn        6
  86. #define XI_DeviceFocusOut        7
  87. #define XI_ProximityIn            8
  88. #define XI_ProximityOut            9
  89. #define XI_DeviceStateNotify        10
  90. #define XI_DeviceMappingNotify        11
  91. #define XI_ChangeDeviceNotify        12
  92. #define XI_DeviceKeystateNotify        13
  93. #define XI_DeviceButtonstateNotify    14
  94.  
  95. /*********************************************************
  96.  *
  97.  * Protocol request constants
  98.  *
  99.  */
  100.  
  101. #define X_GetExtensionVersion        1
  102. #define X_ListInputDevices        2
  103. #define X_OpenDevice            3
  104. #define X_CloseDevice            4
  105. #define X_SetDeviceMode            5
  106. #define X_SelectExtensionEvent      6
  107. #define X_GetSelectedExtensionEvents    7
  108. #define X_ChangeDeviceDontPropagateList 8
  109. #define X_GetDeviceDontPropagateList     9
  110. #define X_GetDeviceMotionEvents     10
  111. #define X_ChangeKeyboardDevice        11
  112. #define X_ChangePointerDevice        12
  113. #define X_GrabDevice             13
  114. #define X_UngrabDevice          14
  115. #define X_GrabDeviceKey            15
  116. #define X_UngrabDeviceKey        16
  117. #define X_GrabDeviceButton        17
  118. #define X_UngrabDeviceButton        18
  119. #define X_AllowDeviceEvents        19
  120. #define X_GetDeviceFocus        20
  121. #define X_SetDeviceFocus        21
  122. #define X_GetFeedbackControl        22
  123. #define X_ChangeFeedbackControl        23
  124. #define X_GetDeviceKeyMapping        24
  125. #define X_ChangeDeviceKeyMapping    25
  126. #define X_GetDeviceModifierMapping    26
  127. #define X_SetDeviceModifierMapping    27
  128. #define X_GetDeviceButtonMapping    28
  129. #define X_SetDeviceButtonMapping    29
  130. #define X_QueryDeviceState         30
  131. #define X_SendExtensionEvent         31
  132. #define X_DeviceBell            32
  133. #define X_SetDeviceValuators        33
  134. #define X_GetDeviceControl        34
  135. #define X_ChangeDeviceControl        35
  136.  
  137. /*********************************************************
  138.  *
  139.  * Protocol request and reply structures.
  140.  *
  141.  * GetExtensionVersion.
  142.  *
  143.  */
  144.  
  145. typedef struct {
  146.     CARD8     reqType;       /* input extension major code   */
  147.     CARD8     ReqType;       /* always X_GetExtensionVersion */
  148.     CARD16     length B16;
  149.     CARD16     nbytes B16;
  150.     CARD8     pad1, pad2;
  151. } xGetExtensionVersionReq;
  152.  
  153. typedef struct {
  154.     CARD8     repType;      /* X_Reply             */
  155.     CARD8     RepType;           /* always X_GetExtensionVersion */
  156.     CARD16     sequenceNumber B16;
  157.     CARD32     length B32;
  158.     CARD16     major_version B16;
  159.     CARD16     minor_version B16;
  160.     BOOL     present;
  161.     CARD8     pad1, pad2, pad3;
  162.     CARD32     pad01 B32;
  163.     CARD32     pad02 B32;
  164.     CARD32     pad03 B32;
  165.     CARD32     pad04 B32;
  166. } xGetExtensionVersionReply;
  167.  
  168. /*********************************************************
  169.  *
  170.  * ListInputDevices.
  171.  *
  172.  */
  173.  
  174. typedef struct {
  175.     CARD8     reqType;    /* input extension major code    */
  176.     CARD8     ReqType;    /* always X_ListInputDevices     */
  177.     CARD16     length B16;
  178. } xListInputDevicesReq;
  179.  
  180. typedef struct {
  181.     CARD8     repType;      /* X_Reply             */
  182.     CARD8     RepType;        /* always X_ListInputDevices      */
  183.     CARD16     sequenceNumber B16;
  184.     CARD32     length B32;
  185.     CARD8     ndevices B32;
  186.     CARD8     pad1, pad2, pad3;
  187.     CARD32     pad01 B32;
  188.     CARD32     pad02 B32;
  189.     CARD32     pad03 B32;
  190.     CARD32     pad04 B32;
  191.     CARD32     pad05 B32;
  192. } xListInputDevicesReply;
  193.  
  194. typedef struct _xDeviceInfo *xDeviceInfoPtr;
  195.  
  196. typedef struct _xAnyClassinfo *xAnyClassPtr;
  197.  
  198. typedef struct _xAnyClassinfo {
  199.     CARD8     class;
  200.     CARD8     length;
  201.     } xAnyClassInfo;
  202.  
  203. typedef struct _xDeviceInfo {
  204.     CARD32    type B32;
  205.     CARD8    id;
  206.     CARD8     num_classes;
  207.     CARD8     use;
  208.     CARD8     pad1;
  209.     } xDeviceInfo;
  210.  
  211. typedef struct _xKeyInfo *xKeyInfoPtr;
  212.  
  213. typedef struct _xKeyInfo {
  214.     CARD8     class;
  215.     CARD8     length;
  216.     KeyCode     min_keycode; 
  217.     KeyCode     max_keycode; 
  218.     CARD16     num_keys B16;
  219.     CARD8     pad1,pad2;
  220.     } xKeyInfo;
  221.  
  222. typedef struct _xButtonInfo *xButtonInfoPtr;
  223.  
  224. typedef struct _xButtonInfo {
  225.     CARD8     class;
  226.     CARD8     length;
  227.     CARD16     num_buttons B16;
  228.     } xButtonInfo;
  229.  
  230. typedef struct _xValuatorInfo *xValuatorInfoPtr;
  231.  
  232. typedef struct _xValuatorInfo {
  233.     CARD8     class;
  234.     CARD8     length;
  235.     CARD8     num_axes;
  236.     CARD8     mode;
  237.     CARD32     motion_buffer_size B32;
  238.     } xValuatorInfo;
  239.  
  240. typedef struct _xAxisInfo *xAxisInfoPtr;
  241.  
  242. typedef struct _xAxisInfo {
  243.     CARD32     resolution B32;
  244.     CARD32     min_value B32;
  245.     CARD32     max_value B32;
  246.     } xAxisInfo;
  247.  
  248. /*********************************************************
  249.  *
  250.  * OpenDevice.
  251.  *
  252.  */
  253.  
  254. typedef struct {
  255.     CARD8    reqType;    /* input extension major code    */
  256.     CARD8     ReqType;        /* always X_OpenDevice         */
  257.     CARD16     length B16;
  258.     CARD8       deviceid;
  259.     BYTE    pad1, pad2, pad3;
  260. } xOpenDeviceReq;
  261.  
  262. typedef struct {
  263.     CARD8     repType;      /* X_Reply             */
  264.     CARD8     RepType;           /* always X_OpenDevice            */
  265.     CARD16     sequenceNumber B16;
  266.     CARD32     length B32;
  267.     CARD8     num_classes;
  268.     BYTE     pad1, pad2, pad3;
  269.     CARD32     pad00 B32;
  270.     CARD32     pad01 B32;
  271.     CARD32     pad02 B32;
  272.     CARD32     pad03 B32;
  273.     CARD32     pad04 B32;
  274.     } xOpenDeviceReply;
  275.  
  276. typedef struct {
  277.     CARD8     class;
  278.     CARD8     event_type_base;
  279.     } xInputClassInfo;
  280.  
  281. /*********************************************************
  282.  *
  283.  * CloseDevice.
  284.  *
  285.  */
  286.  
  287. typedef struct {
  288.     CARD8    reqType;    /* input extension major code    */
  289.     CARD8     ReqType;        /* always X_CloseDevice     */
  290.     CARD16     length B16;
  291.     CARD8       deviceid;
  292.     BYTE    pad1, pad2, pad3;
  293. } xCloseDeviceReq;
  294.  
  295. /*********************************************************
  296.  *
  297.  * SetDeviceMode.
  298.  *
  299.  */
  300.  
  301. typedef struct {
  302.     CARD8     reqType;    /* input extension major code    */
  303.     CARD8     ReqType;         /* always X_SetDeviceMode     */
  304.     CARD16     length B16;
  305.     CARD8       deviceid;
  306.     CARD8       mode;
  307.     BYTE     pad1, pad2;
  308. } xSetDeviceModeReq;
  309.  
  310. typedef struct {
  311.     CARD8     repType;      /* X_Reply             */
  312.     CARD8     RepType;         /* always X_SetDeviceMode      */
  313.     CARD16     sequenceNumber B16;
  314.     CARD32     length B32;
  315.     CARD8     status;
  316.     BYTE    pad1, pad2, pad3;
  317.     CARD32     pad01 B32;
  318.     CARD32     pad02 B32;
  319.     CARD32     pad03 B32;
  320.     CARD32     pad04 B32;
  321.     CARD32     pad05 B32;
  322. } xSetDeviceModeReply;
  323.  
  324. /*********************************************************
  325.  *
  326.  * SelectExtensionEvent.
  327.  *
  328.  */
  329.  
  330. typedef struct {
  331.     CARD8    reqType;    /* input extension major code    */
  332.     CARD8     ReqType;        /* always X_SelectExtensionEvent */
  333.     CARD16     length B16;
  334.     Window     window B32;
  335.     CARD16    count B16;
  336.     CARD16    pad00 B16;
  337. } xSelectExtensionEventReq;
  338.  
  339. /*********************************************************
  340.  *
  341.  * GetSelectedExtensionEvent.
  342.  *
  343.  */
  344.  
  345. typedef struct {
  346.     CARD8    reqType;    /* input extension major code    */
  347.     CARD8     ReqType;        /* X_GetSelectedExtensionEvents */
  348.     CARD16     length B16;
  349.     Window    window B32;
  350. } xGetSelectedExtensionEventsReq;
  351.  
  352. typedef struct {
  353.     CARD8     repType;      /* X_Reply             */
  354.     CARD8     RepType;           /* GetSelectedExtensionEvents    */
  355.     CARD16     sequenceNumber B16;
  356.     CARD32     length B32;
  357.     CARD16     this_client_count B16;
  358.     CARD16     all_clients_count B16;
  359.     CARD32     pad01 B32;
  360.     CARD32     pad02 B32;
  361.     CARD32     pad03 B32;
  362.     CARD32     pad04 B32;
  363.     CARD32     pad05 B32;
  364. } xGetSelectedExtensionEventsReply;
  365.  
  366. /*********************************************************
  367.  *
  368.  * ChangeDeviceDontPropagateList.
  369.  *
  370.  */
  371.  
  372. typedef struct {
  373.     CARD8    reqType;    /* input extension major code    */
  374.     CARD8     ReqType;        /* X_ChangeDeviceDontPropagateList */
  375.     CARD16     length B16;
  376.     Window    window B32;
  377.     CARD16     count B16;
  378.     CARD8     mode;
  379.     BYTE    pad;
  380. } xChangeDeviceDontPropagateListReq;
  381.  
  382. /*********************************************************
  383.  *
  384.  * GetDeviceDontPropagateList.
  385.  *
  386.  */
  387.  
  388. typedef struct {
  389.     CARD8    reqType;    /* input extension major code    */
  390.     CARD8     ReqType;        /* X_GetDeviceDontPropagateList */
  391.     CARD16     length B16;
  392.     Window    window B32;
  393. } xGetDeviceDontPropagateListReq;
  394.  
  395. typedef struct {
  396.     CARD8     repType;      /* X_Reply             */
  397.     CARD8     RepType;        /* GetDeviceDontPropagateList   */
  398.     CARD16     sequenceNumber B16;
  399.     CARD32     length B32;
  400.     CARD16     count B16;
  401.     CARD16     pad00 B16;
  402.     CARD32     pad01 B32;
  403.     CARD32     pad02 B32;
  404.     CARD32     pad03 B32;
  405.     CARD32     pad04 B32;
  406.     CARD32     pad05 B32;
  407.     } xGetDeviceDontPropagateListReply;
  408.  
  409. /*********************************************************
  410.  *
  411.  * GetDeviceMotionEvents.
  412.  *
  413.  */
  414.  
  415. typedef struct {
  416.     CARD8     reqType;    /* input extension major code    */
  417.     CARD8     ReqType;        /* always X_GetDeviceMotionEvents*/
  418.     CARD16     length B16;
  419.     Time     start B32;
  420.     Time    stop B32;
  421.     CARD8    deviceid;
  422.     BYTE    pad1, pad2, pad3;
  423. } xGetDeviceMotionEventsReq;
  424.  
  425. typedef struct {
  426.     CARD8     repType;      /* X_Reply */
  427.     CARD8     RepType;        /* always X_GetDeviceMotionEvents  */
  428.     CARD16     sequenceNumber B16;
  429.     CARD32     length B32;
  430.     CARD32     nEvents B32;
  431.     CARD8      axes;
  432.     CARD8      mode;
  433.     BYTE    pad1, pad2;
  434.     CARD32     pad01 B32;
  435.     CARD32     pad02 B32;
  436.     CARD32     pad03 B32;
  437.     CARD32     pad04 B32;
  438. } xGetDeviceMotionEventsReply;
  439.  
  440. /*********************************************************
  441.  *
  442.  * ChangeKeyboardDevice.
  443.  *
  444.  */
  445.  
  446. typedef struct {
  447.     CARD8    reqType;    /* input extension major code    */
  448.     CARD8     ReqType;        /* X_ChangeKeyboardDevice     */
  449.     CARD16     length B16;
  450.     CARD8     deviceid;
  451.     BYTE    pad1, pad2, pad3;
  452. } xChangeKeyboardDeviceReq;
  453.  
  454. typedef struct {
  455.     CARD8     repType;      /* X_Reply             */
  456.     CARD8     RepType;        /* always X_ChangeKeyboardDevice*/
  457.     CARD16     sequenceNumber B16;
  458.     CARD32     length B32;  /* 0 */
  459.     CARD8     status;
  460.     BYTE    pad1, pad2, pad3;
  461.     CARD32     pad01 B32;
  462.     CARD32     pad02 B32;
  463.     CARD32     pad03 B32;
  464.     CARD32     pad04 B32;
  465.     CARD32     pad05 B32;
  466.     } xChangeKeyboardDeviceReply;
  467.  
  468. /*********************************************************
  469.  *
  470.  * ChangePointerDevice.
  471.  *
  472.  */
  473.  
  474. typedef struct {
  475.     CARD8    reqType;    /* input extension major code    */
  476.     CARD8     ReqType;        /* X_ChangePointerDevice     */
  477.     CARD16     length B16;
  478.     CARD8     xaxis;
  479.     CARD8     yaxis;
  480.     CARD8     deviceid;
  481.     BYTE    pad1;
  482. } xChangePointerDeviceReq;
  483.  
  484. typedef struct {
  485.     CARD8     repType;      /* X_Reply             */
  486.     CARD8     RepType;        /* always X_ChangePointerDevice */
  487.     CARD16     sequenceNumber B16;
  488.     CARD32     length B32;  /* 0 */
  489.     CARD8     status;
  490.     BYTE    pad1, pad2, pad3;
  491.     CARD32     pad01 B32;
  492.     CARD32     pad02 B32;
  493.     CARD32     pad03 B32;
  494.     CARD32     pad04 B32;
  495.     CARD32     pad05 B32;
  496.     } xChangePointerDeviceReply;
  497.  
  498. /*********************************************************
  499.  *
  500.  * GrabDevice.
  501.  *
  502.  */
  503.  
  504. typedef struct {
  505.     CARD8    reqType;    /* input extension major code    */
  506.     CARD8     ReqType;        /* always X_GrabDevice */
  507.     CARD16     length B16;
  508.     Window     grabWindow B32;
  509.     Time     time B32;
  510.     CARD16    event_count B16;
  511.     CARD8    this_device_mode;
  512.     CARD8    other_devices_mode;
  513.     BOOL     ownerEvents;
  514.     CARD8     deviceid;
  515.     CARD16     pad01 B16;
  516. } xGrabDeviceReq;
  517.  
  518. typedef struct {
  519.     CARD8     repType;      /* X_Reply             */
  520.     CARD8     RepType;        /* always X_GrabDevice      */
  521.     CARD16     sequenceNumber B16;
  522.     CARD32     length B32;  /* 0 */
  523.     CARD8     status;
  524.     BYTE    pad1, pad2, pad3;
  525.     CARD32     pad01 B32;
  526.     CARD32     pad02 B32;
  527.     CARD32     pad03 B32;
  528.     CARD32     pad04 B32;
  529.     CARD32     pad05 B32;
  530.     } xGrabDeviceReply;
  531.  
  532. /*********************************************************
  533.  *
  534.  * UngrabDevice.
  535.  *
  536.  */
  537.  
  538. typedef struct {
  539.     CARD8    reqType;    /* input extension major code    */
  540.     CARD8     ReqType;        /* always X_UnGrabDevice     */
  541.     CARD16     length B16;
  542.     Time     time B32;
  543.     CARD8     deviceid;
  544.     BYTE    pad1, pad2, pad3;
  545. } xUngrabDeviceReq;
  546.  
  547. /*********************************************************
  548.  *
  549.  * GrabDeviceKey.
  550.  *
  551.  */
  552.  
  553. typedef struct {
  554.     CARD8    reqType;    /* input extension major code    */
  555.     CARD8     ReqType;        /* always X_GrabDeviceKey     */
  556.     CARD16     length B16;
  557.     Window     grabWindow B32;
  558.     CARD16    event_count B16;
  559.     CARD16     modifiers B16;
  560.     CARD8    modifier_device;
  561.     CARD8    grabbed_device;
  562.     CARD8    key;
  563.     BYTE     this_device_mode;  
  564.     BYTE     other_devices_mode;  
  565.     BOOL     ownerEvents;
  566.     BYTE    pad1, pad2;
  567. } xGrabDeviceKeyReq;
  568.  
  569. /*********************************************************
  570.  *
  571.  * UngrabDeviceKey.
  572.  *
  573.  */
  574.  
  575. typedef struct {
  576.     CARD8    reqType;    /* input extension major code    */
  577.     CARD8     ReqType;        /* always X_UngrabDeviceKey     */
  578.     CARD16     length B16;
  579.     Window     grabWindow B32;
  580.     CARD16    modifiers B16;
  581.     CARD8     modifier_device;
  582.     CARD8    key;
  583.     CARD8    grabbed_device;
  584.     BYTE    pad1, pad2, pad3;
  585. } xUngrabDeviceKeyReq;
  586.  
  587. /*********************************************************
  588.  *
  589.  * GrabDeviceButton.
  590.  *
  591.  */
  592.  
  593. typedef struct {
  594.     CARD8    reqType;    /* input extension major code    */
  595.     CARD8     ReqType;        /* always X_GrabDeviceButton     */
  596.     CARD16     length B16;
  597.     Window     grabWindow B32;
  598.     CARD8    grabbed_device;
  599.     CARD8    modifier_device;
  600.     CARD16     event_count B16;
  601.     CARD16     modifiers B16;
  602.     BYTE     this_device_mode;  
  603.     BYTE     other_devices_mode;  
  604.     CARD8     button;
  605.     BOOL     ownerEvents;
  606.     BYTE    pad1, pad2;
  607. } xGrabDeviceButtonReq;
  608.  
  609. /*********************************************************
  610.  *
  611.  * UngrabDeviceButton.
  612.  *
  613.  */
  614.  
  615. typedef struct {
  616.     CARD8    reqType;    /* input extension major code    */
  617.     CARD8     ReqType;        /* always X_UngrabDeviceButton     */
  618.     CARD16     length B16;
  619.     Window     grabWindow B32;
  620.     CARD16     modifiers B16;
  621.     CARD8     modifier_device;
  622.     CARD8     button;
  623.     CARD8     grabbed_device;
  624.     BYTE    pad1, pad2, pad3;
  625. } xUngrabDeviceButtonReq;
  626.  
  627. /*********************************************************
  628.  *
  629.  * AllowDeviceEvents.
  630.  *
  631.  */
  632.  
  633. typedef struct {
  634.     CARD8    reqType;    /* input extension major code    */
  635.     CARD8     ReqType;        /* always X_AllowDeviceEvents     */
  636.     CARD16     length B16;
  637.     Time     time B32;
  638.     CARD8    mode;
  639.     CARD8     deviceid;
  640.     BYTE    pad1, pad2;
  641. } xAllowDeviceEventsReq;
  642.  
  643. /*********************************************************
  644.  *
  645.  * GetDeviceFocus.
  646.  *
  647.  */
  648.  
  649. typedef struct {
  650.     CARD8     reqType;        /* input extension major code   */
  651.     CARD8     ReqType;        /* always X_GetDeviceFocus     */
  652.     CARD16     length B16;
  653.     CARD8     deviceid;
  654.     BYTE     pad1, pad2, pad3;
  655. } xGetDeviceFocusReq;
  656.  
  657. typedef struct {
  658.     CARD8     repType;      /* X_Reply             */
  659.     CARD8     RepType;        /* always X_GetDeviceFocus      */
  660.     CARD16     sequenceNumber B16;
  661.     CARD32     length B32;
  662.     CARD32     focus B32;
  663.     Time     time B32;
  664.     CARD8      revertTo;
  665.     BYTE     pad1, pad2, pad3;
  666.     CARD32     pad01 B32;
  667.     CARD32     pad02 B32;
  668.     CARD32     pad03 B32;
  669.     } xGetDeviceFocusReply;
  670.  
  671. /*********************************************************
  672.  *
  673.  * SetDeviceFocus.
  674.  *
  675.  */
  676.  
  677. typedef struct {
  678.     CARD8     reqType;        /* input extension major code   */
  679.     CARD8     ReqType;        /* always X_SetDeviceFocus     */
  680.     CARD16     length B16;
  681.     Window     focus B32;
  682.     Time       time B32;
  683.     CARD8      revertTo;
  684.     CARD8      device;
  685.     CARD16     pad01 B16;
  686. } xSetDeviceFocusReq;
  687.  
  688. /*********************************************************
  689.  *
  690.  * GetFeedbackControl.
  691.  *
  692.  */
  693.  
  694. typedef struct {
  695.     CARD8    reqType;    /* input extension major code    */
  696.     CARD8     ReqType;        /* X_GetFeedbackControl      */
  697.     CARD16     length B16;
  698.     CARD8     deviceid;
  699.     BYTE    pad1, pad2, pad3;
  700. } xGetFeedbackControlReq;
  701.  
  702. typedef struct {
  703.     CARD8      repType;      /* X_Reply             */
  704.     CARD8      RepType;        /* always X_GetFeedbackControl     */
  705.     CARD16     sequenceNumber B16;
  706.     CARD32     length B32;
  707.     CARD16    num_feedbacks B16;
  708.     CARD16    pad01 B16;
  709.     CARD32    pad02 B32;
  710.     CARD32    pad03 B32;
  711.     CARD32    pad04 B32;
  712.     CARD32    pad05 B32;
  713.     CARD32    pad06 B32;
  714. } xGetFeedbackControlReply;
  715.  
  716. typedef struct {
  717.     CARD8      class;         /* feedback class        */
  718.     CARD8      id;         /* feedback id            */
  719.     CARD16      length B16;     /* feedback length        */
  720. } xFeedbackState;
  721.  
  722. typedef struct {
  723.     CARD8   class;
  724.     CARD8   id;
  725.     CARD16  length B16;
  726.     CARD16  pitch B16;
  727.     CARD16  duration B16;
  728.     CARD32  led_mask B32;
  729.     CARD32  led_values B32;
  730.     BOOL    global_auto_repeat;
  731.     CARD8   click;
  732.     CARD8   percent;
  733.     BYTE    pad;
  734.     BYTE    auto_repeats[32];
  735. } xKbdFeedbackState;
  736.  
  737. typedef struct {
  738.     CARD8   class;
  739.     CARD8   id;
  740.     CARD16  length B16;
  741.     CARD8   pad1,pad2;
  742.     CARD16  accelNum B16;
  743.     CARD16  accelDenom B16;
  744.     CARD16  threshold B16;
  745. } xPtrFeedbackState;
  746.  
  747. typedef struct {
  748.     CARD8      class;      /* feedback class id        */
  749.     CARD8       id;
  750.     CARD16      length B16;     /* feedback length          */
  751.     CARD32    resolution B32;
  752.     INT32    min_value B32;
  753.     INT32    max_value B32;
  754. } xIntegerFeedbackState;
  755.  
  756. typedef struct {
  757.     CARD8      class;      /* feedback class id        */
  758.     CARD8       id;
  759.     CARD16      length B16;     /* feedback length          */
  760.     CARD16    max_symbols B16;
  761.     CARD16    num_syms_supported B16;
  762. } xStringFeedbackState;
  763.  
  764. typedef struct {
  765.     CARD8      class;      /* feedback class id        */
  766.     CARD8    id;
  767.     CARD16      length B16;     /* feedback length          */
  768.     CARD8    percent;
  769.     BYTE    pad1, pad2, pad3;
  770.     CARD16    pitch B16;
  771.     CARD16    duration B16;
  772. } xBellFeedbackState;
  773.  
  774. typedef struct {
  775.     CARD8      class;      /* feedback class id        */
  776.     CARD8    id;
  777.     CARD16      length B16;     /* feedback length          */
  778.     CARD32    led_mask B32;
  779.     CARD32    led_values B32;
  780. } xLedFeedbackState;
  781.  
  782. /*********************************************************
  783.  *
  784.  * ChangeFeedbackControl.
  785.  *
  786.  */
  787.  
  788. typedef struct {
  789.     CARD8    reqType;    /* input extension major code    */
  790.     CARD8     ReqType;        /* X_ChangeFeedbackControl      */
  791.     CARD16     length B16;
  792.     CARD32    mask B32;
  793.     CARD8      deviceid;
  794.     CARD8      feedbackid;
  795.     BYTE    pad1, pad2;
  796. } xChangeFeedbackControlReq;
  797.  
  798. typedef struct {
  799.     CARD8      class;      /* feedback class id        */
  800.     CARD8      id;         /* feedback id              */
  801.     CARD16      length B16;     /* feedback length          */
  802. } xFeedbackCtl;
  803.  
  804. typedef struct {
  805.     CARD8      class;      /* feedback class id        */
  806.     CARD8      id;         /* feedback length          */
  807.     CARD16      length B16;     /* feedback length          */
  808.     KeyCode     key; 
  809.     CARD8    auto_repeat_mode;
  810.     INT8    click;
  811.     INT8    percent;
  812.     INT16    pitch B16;
  813.     INT16    duration B16;
  814.     CARD32    led_mask B32;
  815.     CARD32    led_values B32;
  816. } xKbdFeedbackCtl;
  817.  
  818. typedef struct {
  819.     CARD8      class;      /* feedback class id        */
  820.     CARD8      id;         /* feedback id              */
  821.     CARD16      length B16;     /* feedback length          */
  822.     CARD8      pad1,pad2;
  823.     INT16    num B16;
  824.     INT16    denom B16;
  825.     INT16    thresh B16;
  826. } xPtrFeedbackCtl;
  827.  
  828. typedef struct {
  829.     CARD8      class;      /* feedback class id        */
  830.     CARD8      id;         /* feedback id              */
  831.     CARD16      length B16;     /* feedback length          */
  832.     INT32    int_to_display B32;
  833. } xIntegerFeedbackCtl;
  834.  
  835. typedef struct {
  836.     CARD8      class;      /* feedback class id        */
  837.     CARD8      id;         /* feedback id              */
  838.     CARD16      length B16;     /* feedback length          */
  839.     CARD8      pad1,pad2;
  840.     CARD16    num_keysyms B16;
  841. } xStringFeedbackCtl;
  842.  
  843. typedef struct {
  844.     CARD8      class;      /* feedback class id        */
  845.     CARD8      id;         /* feedback id              */
  846.     CARD16      length B16;     /* feedback length          */
  847.     INT8    percent;
  848.     BYTE    pad1, pad2, pad3;
  849.     INT16    pitch B16;
  850.     INT16    duration B16;
  851. } xBellFeedbackCtl;
  852.  
  853. typedef struct {
  854.     CARD8      class;      /* feedback class id        */
  855.     CARD8      id;         /* feedback id              */
  856.     CARD16      length B16;     /* feedback length          */
  857.     CARD32    led_mask B32;
  858.     CARD32    led_values B32;
  859. } xLedFeedbackCtl;
  860.  
  861. /*********************************************************
  862.  *
  863.  * GetDeviceKeyMapping.
  864.  *
  865.  */
  866.  
  867. typedef struct {
  868.     CARD8     reqType;        /* input extension major code   */
  869.     CARD8     ReqType;         /* always X_GetDeviceKeyMapping */
  870.     CARD16     length B16;
  871.     CARD8       deviceid;
  872.     KeyCode     firstKeyCode; 
  873.     CARD8     count;
  874.     BYTE    pad1;
  875. } xGetDeviceKeyMappingReq;
  876.  
  877. typedef struct {
  878.     CARD8      repType;      /* X_Reply             */
  879.     CARD8      RepType;           /* always X_GetDeviceKeyMapping */
  880.     CARD16     sequenceNumber B16;
  881.     CARD32     length B32;
  882.     CARD8      keySymsPerKeyCode;
  883.     CARD8      pad0;
  884.     CARD16     pad1 B16;
  885.     CARD32     pad2 B32;
  886.     CARD32     pad3 B32;
  887.     CARD32     pad4 B32;
  888.     CARD32     pad5 B32;
  889.     CARD32     pad6 B32;
  890. } xGetDeviceKeyMappingReply;
  891.  
  892. /*********************************************************
  893.  *
  894.  * ChangeDeviceKeyMapping.
  895.  *
  896.  */
  897.  
  898. typedef struct {
  899.     CARD8     reqType;        /* input extension major code   */
  900.     CARD8     ReqType;        /* always X_ChangeDeviceKeyMapping */
  901.     CARD16     length B16;
  902.     CARD8       deviceid;
  903.     KeyCode     firstKeyCode;
  904.     CARD8     keySymsPerKeyCode;
  905.     CARD8     keyCodes;
  906. } xChangeDeviceKeyMappingReq;
  907.  
  908. /*********************************************************
  909.  *
  910.  * GetDeviceModifierMapping.
  911.  *
  912.  */
  913.  
  914. typedef struct {
  915.     CARD8     reqType;        /* input extension major code   */
  916.     CARD8     ReqType;        /* always X_GetDeviceModifierMapping */
  917.     CARD16     length B16;
  918.     CARD8       deviceid;
  919.     BYTE    pad1, pad2, pad3;
  920. } xGetDeviceModifierMappingReq;
  921.  
  922. typedef struct {
  923.     CARD8      repType;      /* X_Reply */
  924.     CARD8      RepType;        /* always X_GetDeviceModifierMapping */
  925.     CARD16     sequenceNumber B16;
  926.     CARD32     length B32;
  927.     CARD8      numKeyPerModifier;
  928.     CARD8      pad0;
  929.     CARD16     pad1 B16;
  930.     CARD32     pad2 B32;
  931.     CARD32     pad3 B32;
  932.     CARD32     pad4 B32;
  933.     CARD32     pad5 B32;
  934.     CARD32     pad6 B32;
  935. } xGetDeviceModifierMappingReply;
  936.  
  937. /*********************************************************
  938.  *
  939.  * SetDeviceModifierMapping.
  940.  *
  941.  */
  942.  
  943. typedef struct {
  944.     CARD8     reqType;        /* input extension major code   */
  945.     CARD8     ReqType;        /* always X_SetDeviceModifierMapping */
  946.     CARD16     length B16;
  947.     CARD8       deviceid;
  948.     CARD8       numKeyPerModifier;
  949.     CARD16      pad1 B16;
  950. } xSetDeviceModifierMappingReq;
  951.  
  952. typedef struct {
  953.     CARD8      repType;      /* X_Reply */
  954.     CARD8      RepType;        /* always X_SetDeviceModifierMapping */
  955.     CARD16     sequenceNumber B16;
  956.     CARD32     length B32;
  957.     CARD8      success;
  958.     CARD8      pad0;
  959.     CARD16     pad1 B16;
  960.     CARD32     pad2 B32;
  961.     CARD32     pad3 B32;
  962.     CARD32     pad4 B32;
  963.     CARD32     pad5 B32;
  964.     CARD32     pad6 B32;
  965. } xSetDeviceModifierMappingReply;
  966.  
  967. /*********************************************************
  968.  *
  969.  * GetDeviceButtonMapping.
  970.  *
  971.  */
  972.  
  973. typedef struct {
  974.     CARD8    reqType;    /* input extension major code    */
  975.     CARD8     ReqType;        /* X_GetDeviceButtonMapping     */
  976.     CARD16     length B16;
  977.     CARD8       deviceid;
  978.     BYTE    pad1, pad2, pad3;
  979. } xGetDeviceButtonMappingReq;
  980.  
  981. typedef struct {
  982.     CARD8      repType;      /* X_Reply */
  983.     CARD8      RepType;        /* always X_GetDeviceButtonMapping */
  984.     CARD16     sequenceNumber B16;
  985.     CARD32     length B32;
  986.     CARD8     nElts;
  987.     BYTE    pad1, pad2, pad3;
  988.     CARD32     pad01 B32;
  989.     CARD32     pad02 B32;
  990.     CARD32     pad03 B32;
  991.     CARD32     pad04 B32;
  992.     CARD32     pad05 B32;
  993. } xGetDeviceButtonMappingReply;
  994.  
  995. /*********************************************************
  996.  *
  997.  * SetDeviceButtonMapping.
  998.  *
  999.  */
  1000.  
  1001. typedef struct {
  1002.     CARD8    reqType;    /* input extension major code    */
  1003.     CARD8     ReqType;        /* X_SetDeviceButtonMapping     */
  1004.     CARD16     length B16;
  1005.     CARD8       deviceid;
  1006.     CARD8       map_length;
  1007.     BYTE    pad1, pad2;
  1008. } xSetDeviceButtonMappingReq;
  1009.  
  1010. typedef struct {
  1011.     CARD8      repType;          /* X_Reply */
  1012.     CARD8      RepType;            /* always X_SetDeviceButtonMapping */
  1013.     CARD16     sequenceNumber B16;
  1014.     CARD32     length B32;
  1015.     CARD8     status;
  1016.     BYTE     pad0;
  1017.     CARD16     pad1 B16;
  1018.     CARD32     pad2 B32;
  1019.     CARD32     pad3 B32;
  1020.     CARD32     pad4 B32;
  1021.     CARD32     pad5 B32;
  1022.     CARD32     pad6 B32;
  1023. } xSetDeviceButtonMappingReply;
  1024.  
  1025. /*********************************************************
  1026.  *
  1027.  * QueryDeviceState.
  1028.  *
  1029.  */
  1030.  
  1031. typedef struct {
  1032.     CARD8    reqType;
  1033.     CARD8     ReqType;        /* always X_QueryDeviceState */
  1034.     CARD16     length B16;
  1035.     CARD8       deviceid;
  1036.     BYTE    pad1, pad2, pad3;
  1037. } xQueryDeviceStateReq;
  1038.  
  1039. typedef struct {
  1040.     CARD8      repType;          /* X_Reply */
  1041.     CARD8      RepType;            /* always X_QueryDeviceState    */
  1042.     CARD16     sequenceNumber B16;
  1043.     CARD32     length B32;
  1044.     CARD8     num_classes;
  1045.     BYTE     pad0;
  1046.     CARD16     pad1 B16;
  1047.     CARD32     pad2 B32;
  1048.     CARD32     pad3 B32;
  1049.     CARD32     pad4 B32;
  1050.     CARD32     pad5 B32;
  1051.     CARD32     pad6 B32;
  1052. } xQueryDeviceStateReply;
  1053.  
  1054. typedef struct {
  1055.     CARD8      class;
  1056.     CARD8      length;
  1057.     CARD8    num_keys;
  1058.     BYTE       pad1;
  1059.     CARD8      keys[32];
  1060. } xKeyState;
  1061.  
  1062. typedef struct {
  1063.     CARD8      class;
  1064.     CARD8      length;
  1065.     CARD8    num_buttons;
  1066.     BYTE       pad1;
  1067.     CARD8      buttons[32];
  1068. } xButtonState;
  1069.  
  1070. typedef struct {
  1071.     CARD8      class;
  1072.     CARD8      length;
  1073.     CARD8      num_valuators;
  1074.     CARD8    mode;
  1075. } xValuatorState;
  1076.  
  1077. /*********************************************************
  1078.  *
  1079.  * SendExtensionEvent.
  1080.  * THIS REQUEST MUST BE KEPT A MULTIPLE OF 8 BYTES IN LENGTH!
  1081.  * MORE EVENTS MAY FOLLOW AND THEY MUST BE QUAD-ALIGNED!
  1082.  *
  1083.  */
  1084.  
  1085. typedef struct {
  1086.     CARD8    reqType;
  1087.     CARD8     ReqType;        /* always X_SendExtensionEvent */
  1088.     CARD16     length B16;
  1089.     Window    destination B32;
  1090.     CARD8       deviceid;
  1091.     BOOL       propagate;
  1092.     CARD16    count B16;
  1093.     CARD8    num_events;
  1094.     BYTE    pad1,pad2,pad3;
  1095. } xSendExtensionEventReq;
  1096.  
  1097. /*********************************************************
  1098.  *
  1099.  * DeviceBell.
  1100.  *
  1101.  */
  1102.  
  1103. typedef struct {
  1104.     CARD8    reqType;
  1105.     CARD8     ReqType;        /* always X_DeviceBell */
  1106.     CARD16     length B16;
  1107.     CARD8       deviceid;
  1108.     CARD8    feedbackid;
  1109.     CARD8    feedbackclass;
  1110.     INT8    percent;
  1111. } xDeviceBellReq;
  1112.  
  1113. /*********************************************************
  1114.  *
  1115.  * SetDeviceValuators.
  1116.  *
  1117.  */
  1118.  
  1119. typedef struct {
  1120.     CARD8     reqType;    /* input extension major code    */
  1121.     CARD8     ReqType;         /* always X_SetDeviceValuators     */
  1122.     CARD16     length B16;
  1123.     CARD8       deviceid;
  1124.     CARD8       first_valuator;
  1125.     CARD8       num_valuators;
  1126.     BYTE     pad1;
  1127. } xSetDeviceValuatorsReq;
  1128.  
  1129. typedef struct {
  1130.     CARD8     repType;      /* X_Reply             */
  1131.     CARD8     RepType;         /* always X_SetDeviceValuators     */
  1132.     CARD16     sequenceNumber B16;
  1133.     CARD32     length B32;
  1134.     CARD8     status;
  1135.     BYTE    pad1, pad2, pad3;
  1136.     CARD32     pad01 B32;
  1137.     CARD32     pad02 B32;
  1138.     CARD32     pad03 B32;
  1139.     CARD32     pad04 B32;
  1140.     CARD32     pad05 B32;
  1141. } xSetDeviceValuatorsReply;
  1142.  
  1143. /*********************************************************
  1144.  *
  1145.  * GetDeviceControl.
  1146.  *
  1147.  */
  1148.  
  1149. typedef struct {
  1150.     CARD8     reqType;    /* input extension major code    */
  1151.     CARD8     ReqType;         /* always X_GetDeviceControl     */
  1152.     CARD16     length B16;
  1153.     CARD16      control B16;
  1154.     CARD8       deviceid;
  1155.     BYTE     pad2;
  1156. } xGetDeviceControlReq;
  1157.  
  1158. typedef struct {
  1159.     CARD8     repType;      /* X_Reply             */
  1160.     CARD8     RepType;         /* always X_GetDeviceControl     */
  1161.     CARD16     sequenceNumber B16;
  1162.     CARD32     length B32;
  1163.     CARD8     status;
  1164.     BYTE    pad1, pad2, pad3;
  1165.     CARD32     pad01 B32;
  1166.     CARD32     pad02 B32;
  1167.     CARD32     pad03 B32;
  1168.     CARD32     pad04 B32;
  1169.     CARD32     pad05 B32;
  1170. } xGetDeviceControlReply;
  1171.  
  1172. typedef struct {
  1173.     CARD16      control B16;     /* control type              */
  1174.     CARD16      length B16;     /* control length          */
  1175. } xDeviceState;
  1176.  
  1177. typedef struct {
  1178.     CARD16      control B16;         /* control type              */
  1179.     CARD16      length B16;         /* control length          */
  1180.     CARD32      num_valuators B32;     /* number of valuators        */
  1181. } xDeviceResolutionState;
  1182.  
  1183. /*********************************************************
  1184.  *
  1185.  * ChangeDeviceControl.
  1186.  *
  1187.  */
  1188.  
  1189. typedef struct {
  1190.     CARD8     reqType;    /* input extension major code    */
  1191.     CARD8     ReqType;         /* always X_ChangeDeviceControl */
  1192.     CARD16     length B16;
  1193.     CARD16      control B16;
  1194.     CARD8       deviceid;
  1195.     CARD8       num_valuators;
  1196. } xChangeDeviceControlReq;
  1197.  
  1198. typedef struct {
  1199.     CARD8     repType;      /* X_Reply             */
  1200.     CARD8     RepType;         /* always X_ChangeDeviceControl    */
  1201.     CARD16     sequenceNumber B16;
  1202.     CARD32     length B32;
  1203.     CARD8     status;
  1204.     BYTE    pad1, pad2, pad3;
  1205.     CARD32     pad01 B32;
  1206.     CARD32     pad02 B32;
  1207.     CARD32     pad03 B32;
  1208.     CARD32     pad04 B32;
  1209.     CARD32     pad05 B32;
  1210. } xChangeDeviceControlReply;
  1211.  
  1212. typedef struct {
  1213.     CARD16      control B16;     /* control type              */
  1214.     CARD16      length B16;     /* control length          */
  1215. } xDeviceCtl;
  1216.  
  1217. typedef struct {
  1218.     CARD16      control B16;         /* control type              */
  1219.     CARD16      length B16;         /* control length          */
  1220.     CARD8      first_valuator;     /* first valuator to change     */
  1221.     CARD8      num_valuators;         /* number of valuators to change*/
  1222.     CARD8      pad1,pad2;
  1223. } xDeviceResolutionCtl;
  1224.  
  1225. /**********************************************************
  1226.  *
  1227.  * Input extension events.
  1228.  *
  1229.  * DeviceValuator
  1230.  *
  1231.  */
  1232.  
  1233. typedef struct
  1234.     {
  1235.     BYTE     type;
  1236.     CARD8       deviceid;
  1237.     CARD16     sequenceNumber B16;
  1238.     KeyButMask  device_state B16;
  1239.     CARD8    num_valuators;
  1240.     CARD8       first_valuator;
  1241.     INT32     valuator0 B32;
  1242.     INT32     valuator1 B32;
  1243.     INT32     valuator2 B32;
  1244.     INT32     valuator3 B32;
  1245.     INT32     valuator4 B32;
  1246.     INT32     valuator5 B32;
  1247.     }  deviceValuator;
  1248.  
  1249. /**********************************************************
  1250.  *
  1251.  * DeviceKeyButtonPointer.
  1252.  *
  1253.  * Used for: DeviceKeyPress, DeviceKeyRelease,
  1254.  *         DeviceButtonPress, DeviceButtonRelease,
  1255.  *         ProximityIn, ProximityOut
  1256.  *         DeviceMotionNotify,
  1257.  * 
  1258.  */
  1259.  
  1260. typedef struct
  1261.     {
  1262.     BYTE     type;
  1263.     BYTE        detail;
  1264.     CARD16     sequenceNumber B16;
  1265.     Time        time B32;
  1266.     Window      root B32;
  1267.     Window      event B32;
  1268.     Window      child B32;
  1269.     INT16       root_x B16;
  1270.     INT16       root_y B16;
  1271.     INT16       event_x B16;
  1272.     INT16       event_y B16;
  1273.     KeyButMask  state B16;
  1274.     BOOL        same_screen;
  1275.     CARD8       deviceid;
  1276.     }  deviceKeyButtonPointer;
  1277.  
  1278. /**********************************************************
  1279.  *
  1280.  * DeviceFocus.
  1281.  *
  1282.  */
  1283.  
  1284. typedef struct
  1285.     {
  1286.     BYTE     type;
  1287.     BYTE        detail;
  1288.     CARD16     sequenceNumber B16;
  1289.     Time        time B32;
  1290.     Window      window B32;
  1291.     BYTE    mode;
  1292.     CARD8       deviceid;
  1293.     BYTE    pad1, pad2;
  1294.     CARD32    pad00 B32;
  1295.     CARD32    pad01 B32;
  1296.     CARD32    pad02 B32;
  1297.     CARD32    pad03 B32;
  1298.     }  deviceFocus;
  1299.  
  1300. /**********************************************************
  1301.  *
  1302.  * DeviceStateNotify.
  1303.  *
  1304.  * Note that the two high-order bits in the classes_reported
  1305.  * field are the proximity state (InProximity or OutOfProximity),
  1306.  * and the device mode (Absolute or Relative), respectively.
  1307.  *
  1308.  */
  1309.  
  1310. typedef struct
  1311.     {
  1312.     BYTE     type;
  1313.     BYTE        deviceid;
  1314.     CARD16     sequenceNumber B16;
  1315.     Time        time B32;
  1316.     CARD8    num_keys;
  1317.     CARD8    num_buttons;
  1318.     CARD8    num_valuators;
  1319.     CARD8       classes_reported;
  1320.     CARD8       buttons[4];
  1321.     CARD8       keys[4];
  1322.     INT32    valuator0 B32;
  1323.     INT32    valuator1 B32;
  1324.     INT32    valuator2 B32;
  1325.     }  deviceStateNotify;
  1326.  
  1327. /**********************************************************
  1328.  *
  1329.  * DeviceKeyStateNotify.
  1330.  *
  1331.  */
  1332.  
  1333. typedef struct
  1334.     {
  1335.     BYTE     type;
  1336.     BYTE        deviceid;
  1337.     CARD16     sequenceNumber B16;
  1338.     CARD8       keys[28];
  1339.     }  deviceKeyStateNotify;
  1340.  
  1341. /**********************************************************
  1342.  *
  1343.  * DeviceButtonStateNotify.
  1344.  *
  1345.  */
  1346.  
  1347. typedef struct
  1348.     {
  1349.     BYTE     type;
  1350.     BYTE        deviceid;
  1351.     CARD16     sequenceNumber B16;
  1352.     CARD8       buttons[28];
  1353.     }  deviceButtonStateNotify;
  1354.  
  1355. /**********************************************************
  1356.  *
  1357.  * DeviceMappingNotify.
  1358.  * Fields must be kept in sync with core mappingnotify event.
  1359.  *
  1360.  */
  1361.  
  1362. typedef struct
  1363.     {
  1364.     BYTE     type;
  1365.     BYTE        deviceid;
  1366.     CARD16     sequenceNumber B16;
  1367.     CARD8       request;
  1368.     KeyCode     firstKeyCode;
  1369.     CARD8       count;
  1370.     BYTE        pad1;
  1371.     Time        time B32;
  1372.     CARD32    pad00 B32;
  1373.     CARD32    pad01 B32;
  1374.     CARD32    pad02 B32;
  1375.     CARD32    pad03 B32;
  1376.     CARD32    pad04 B32;
  1377.     }  deviceMappingNotify;
  1378.  
  1379. /**********************************************************
  1380.  *
  1381.  * ChangeDeviceNotify.
  1382.  *
  1383.  */
  1384.  
  1385. typedef struct
  1386.     {
  1387.     BYTE     type;
  1388.     BYTE        deviceid;
  1389.     CARD16     sequenceNumber B16;
  1390.     Time        time B32;
  1391.     CARD8       request;
  1392.     BYTE        pad1, pad2, pad3;
  1393.     CARD32    pad00 B32;
  1394.     CARD32    pad01 B32;
  1395.     CARD32    pad02 B32;
  1396.     CARD32    pad03 B32;
  1397.     CARD32    pad04 B32;
  1398.     }  changeDeviceNotify;
  1399.  
  1400. #endif
  1401.